شرح دورة أساسيات Ruby

Ruby هي لغة برمجة ديناميكية وكائنية التوجه طورتها يوكيهيرو ماتسوموتو في التسعينيات. تُعرف ببساطتها وقوتها، وتُستخدم بشكل واسع في تطوير الويب (مثل Ruby on Rails)، أتمتة المهام، ومعالجة البيانات. هذه الدورة سترشدك عبر الأساسيات بأمثلة عملية.

الدرس الأول: مقدمة وتثبيت Ruby

Ruby هي لغة بسيطة وأنيقة تُركز على سهولة القراءة والكتابة.

شرح مفصل:
  • التثبيت: تثبيت Ruby من ruby-lang.org أو عبر مدير الحزم (مثل Homebrew).
  • التشغيل: استخدام الأمر ruby لتشغيل الملفات أو irb للتفاعل.
  • الإصدار: التحقق من الإصدار باستخدام ruby -v.
مثال:
puts "مرحبًا بك في Ruby!" # ✅ مرحبًا بك في Ruby!

الدرس الثاني: المتغيرات وأنواع البيانات

Ruby ديناميكية ولا تحتاج إلى تعريف أنواع المتغيرات مسبقًا.

شرح مفصل:
  • المتغيرات: تُعرف مباشرة باستخدام اسم.
  • الأنواع: أرقام (Integer, Float)، نصوص (String)، منطقية (TrueClass/FalseClass).
  • النطاق: متغيرات محلية، عالمية ($)، كلاس (@)، مثيل (@@).
مثال:
name = "علي" age = 25 price = 19.99 active = true puts "#{name} عمره #{age} ونشط: #{active}" # ✅ علي عمره 25 ونشط: true

الدرس الثالث: الجمل الشرطية والحلقات

التحكم في تدفق البرنامج باستخدام الشروط والتكرار.

شرح مفصل:
  • if/else: لاتخاذ القرارات.
  • each: للتكرار على المجموعات.
  • while/until: للتكرار بناءً على شرط.
مثال:
age = 18 if age >= 18 puts "بالغ" else puts "قاصر" end [1, 2, 3].each { |n| puts n } # ✅ 1 2 3

الدرس الرابع: الدوال

الدوال تُستخدم لتنظيم الكود وإعادة استخدامه.

شرح مفصل:
  • التعريف: باستخدام def.
  • المعاملات: اختيارية مع قيم افتراضية.
  • الإرجاع: آخر تعبير يُرجع تلقائيًا.
مثال:
def greet(name = "زائر") "مرحبًا، #{name}!" end puts greet("علي") # ✅ مرحبًا، علي! puts greet # ✅ مرحبًا، زائر!

الدرس الخامس: المصفوفات والهاش

Ruby يوفر هياكل بيانات مرنة لتخزين العناصر.

شرح مفصل:
  • Array: قائمة مرتبة باستخدام [].
  • Hash: أزواج مفتاح-قيمة باستخدام {}.
  • التكرار: استخدام each للوصول للعناصر.
مثال:
fruits = ["تفاح", "موز"] person = { name: "علي", age: 25 } puts fruits[0] # ✅ تفاح puts person[:name] # ✅ علي fruits.each { |f| puts f } # ✅ تفاح موز

الدرس السادس: التعامل مع الملفات

Ruby يجعل التعامل مع الملفات سهلاً وقويًا.

شرح مفصل:
  • القراءة: File.read لقراءة محتوى الملف.
  • الكتابة: File.write لإنشاء أو تعديل ملف.
  • المسارات: Dir لإدارة المجلدات.
مثال:
File.write("test.txt", "مرحبًا، Ruby!") content = File.read("test.txt") puts content # ✅ مرحبًا، Ruby! puts Dir.pwd # ✅ المسار الحالي

الدرس السابع: الكائنات والكلاسات

Ruby هي لغة كائنية التوجه، وكل شيء فيها كائن.

شرح مفصل:
  • Class: تعريف الكائنات باستخدام class.
  • الخصائص: باستخدام @ للمتغيرات المثيلية.
  • الدوال: تُضاف داخل الكلاس.
مثال:
class Person def initialize(name) @name = name end def greet puts "مرحبًا، أنا #{@name}!" end end person = Person.new("علي") person.greet # ✅ مرحبًا، أنا علي!

الدرس الثامن: المحددات

المحددات تتحكم في الوصول إلى الدوال والمتغيرات.

شرح مفصل:
  • public: الوصول متاح للجميع (افتراضي).
  • private: الوصول داخل الكلاس فقط.
  • protected: الوصول داخل الكلاس والكلاسات الفرعية.
مثال:
class Secret def public_method puts "عام" end private def private_method puts "خاص" end end s = Secret.new s.public_method # ✅ عام # s.private_method # ❌ خطأ

الدرس التاسع: الاستثناءات

إدارة الأخطاء لضمان استمرارية البرنامج.

شرح مفصل:
  • begin/rescue: لمعالجة الأخطاء.
  • ensure: لتنفيذ كود دائمًا.
  • raise: لإلقاء استثناء يدويًا.
مثال:
begin result = 10 / 0 rescue ZeroDivisionError => e puts "خطأ: #{e}" ensure puts "تم التنفيذ" end # ✅ خطأ: divided by 0 \n تم التنفيذ

الدرس العاشر: الموديولات

الموديولات تُستخدم لتنظيم الكود وإضافة وظائف مشتركة.

شرح مفصل:
  • التعريف: باستخدام module.
  • include: لإدراج الموديول في كلاس.
  • Mixin: إضافة سلوك مشترك.
مثال:
module Greetings def say_hello puts "مرحبًا!" end end class Person include Greetings end p = Person.new p.say_hello # ✅ مرحبًا!

الدرس الحادي عشر: التعامل مع السلاسل

Ruby يوفر أدوات قوية لمعالجة النصوص.

شرح مفصل:
  • التوصيل: باستخدام + أو #{}.
  • التعديل: دوال مثل upcase وsplit.
  • البحث: include? لفحص السلاسل.
مثال:
text = "مرحبًا" puts text + " Ruby" # ✅ مرحبًا Ruby puts text.upcase # ✅ مرحبًا puts text.include?("ح") # ✅ true

الدرس الثاني عشر: الميتا برمجة

الميتا برمجة تتيح تعديل الكود ديناميكيًا أثناء التشغيل.

شرح مفصل:
  • send: استدعاء دالة ديناميكيًا.
  • define_method: تعريف دالة ديناميكيًا.
مثال:
class Dynamic def hello puts "مرحبًا" end end d = Dynamic.new d.send(:hello) # ✅ مرحبًا class Dynamic define_method(:greet) do puts "تحية!" end end d.greet # ✅ تحية!

الدرس الثالث عشر: مشروع عملي - مدير مهام بسيط

تطبيق عملي يجمع الأساسيات.

شرح مفصل:
  • الهدف: إنشاء برنامج لإدارة المهام.
مثال:
class Task attr_accessor :title, :done def initialize(title) @title = title @done = false end def complete @done = true puts "#{@title} تم إكمالها!" end end tasks = [] tasks << Task.new("كتابة كود") tasks << Task.new("اختبار") tasks.each do |task| task.complete end # ✅ كتابة كود تم إكمالها! \n اختبار تم إكمالها!